package xgodbconfig

import (
	"strings"

	"gitee.com/xiaoyutab/xgotool/xerror"
)

// 获取配置项分组列表[因配置项分组不会经常获取，所以此处不进行分组缓存，仅进行基础的配置项缓存]
//
//	fid	父级分类ID[0xffff表示获取全部]
func GroupList(fid uint) ([]ConfigureGroup, error) {
	if _default.DB == nil {
		return nil, xerror.New("数据库未连接")
	}
	mod := []ConfigureGroup{}
	db := _default.DB.Table(_default.ConfigureGroupTable)
	if fid != 0xffff {
		db = db.Where("fid", fid)
	}
	err := db.Order("id ASC").Find(&mod).Error
	if err != nil {
		return nil, err
	}
	return mod, nil
}

// 插入配置项分组信息[一定要指定ID，此处不进行ID自增和ID返回操作，需要手动指定配置组的ID，以便进行无限分类获取]
//
//	g	待插入的分组列表信息
func GroupInserts(g []ConfigureGroup) error {
	if _default.DB == nil {
		return xerror.New("数据库未连接")
	}
	err_msg := []string{}
	for _, v := range g {
		if v.Id <= 0 {
			continue
		}
		err := _default.DB.Table(_default.ConfigureGroupTable).Save(&v).Error
		if v.Id == 0xffff {
			// 如果ID和占位符0xffff重复了，则将此条目进行删除再次添加
			_default.DB.Table(_default.ConfigureGroupTable).Where("id", 0xffff).Delete(&ConfigureGroup{})
			v.Id++
			err = _default.DB.Table(_default.ConfigureGroupTable).Save(&v).Error
		}
		if err != nil {
			err_msg = append(err_msg, err.Error())
		}
	}
	if len(err_msg) > 0 {
		return xerror.New(strings.Join(err_msg, "\n"))
	}
	return nil
}
